package vip.xiaonuo.biz.modular.scan.service;

import vip.xiaonuo.biz.modular.apilog.entity.DevApiLog;
import vip.xiaonuo.biz.modular.goods.entity.BizGoods;
import vip.xiaonuo.biz.modular.goods.result.GoodsLedgerPageResult;
import vip.xiaonuo.biz.modular.scan.param.ScanDto;

import java.util.List;

/**
 * @author 墨塵
 * @since 2023/11/1
 */
public interface ScanEventService {
    /**
     * 添加记录-首次入柜
     * 16
     * @param goodsList
     * @param apiLog
     */
     void addRecordForGoodsFirstInCab(List<BizGoods> goodsList, DevApiLog apiLog);

    /**
     * 处理试剂第一次入柜（包含未称重事件）
     * 37 41
     * @param goodsList
     * @param apiLog
     */
    void handleReagentInCabFirst(ScanDto dto, DevApiLog apiLog);

    /**
     * 添加记录-报废物品入柜
     * 25
     * @param rfids
     * @param apiLog
     */
    void addRecordForScrapiGoodsInCab(List<BizGoods> goodsList, DevApiLog apiLog);

    /**
     * 处理 试剂柜超过最大承重
     * 39
     * @param rfids
     * @param apiLog
     */
    void handleCabWeight(ScanDto dto, DevApiLog apiLog);

    /**
     * 处理-试剂存储属性冲突
     * 40
     * @param dto
     * @param apiLog
     */
    void handleReagentClassClash(ScanDto dto,DevApiLog apiLog);

    /**
     * 添加记录-出库称重异常
     * 35
     * @param dto
     * @param apiLog
     */
    void addRecordForReagentUsageAbn(ScanDto dto,DevApiLog apiLog);

    /**
     * 添加记录-取还间称重次数小于两次
     * 38
     * @param dto
     * @param apiLog
     */
    void addRecordForRtnWeighCount(ScanDto dto,DevApiLog apiLog);

    /**
     * 添加记录-取还人不一致
     * 18
     * @param dto
     * @param apiLog
     */
    void addRecordForGoodsBrOfUserAbn(GoodsLedgerPageResult goodsLedgerPageResult , ScanDto dto, DevApiLog apiLog);

    /**
     * 添加记录-物品超期归还
     * 20
     * @param goodsLedgerPageResult
     * @param dto
     * @param apiLog
     */
    void addRecordForGoodsBrOfOverdue(GoodsLedgerPageResult goodsLedgerPageResult , ScanDto dto, DevApiLog apiLog);
}
